package br.com.mobimenu.business;

import java.io.Serializable;
import java.util.Collection;

import br.com.mobimenu.model.Entidade;
import br.com.mobimenu.model.impl.Usuario;
import br.com.mobimenu.persistence.DAO.HibernateDAO;
import br.com.mobimenu.persistence.filter.Filtro;

public interface Service<ENTIDADE extends Entidade, ID extends Serializable, FILTRO extends Filtro, REPOSITORIO extends HibernateDAO<ENTIDADE, ID, FILTRO>> {

	public ENTIDADE buscar(ID id);

	public Collection<ENTIDADE> consultar(FILTRO filtro);

	public void editar(ENTIDADE vo, Usuario usuario);

	public void excluir(ENTIDADE entidade);

	public Class<ENTIDADE> getClassEntidade();

	public REPOSITORIO getRepositorioDAO();

	public void inserir(ENTIDADE vo, Usuario usuario);

	public void resolverPerDependencias(ENTIDADE vo, Usuario usuario);

	public void resolverPosDependencias(ENTIDADE vo, Usuario usuario);

	public void tratarDadosEntidade(ENTIDADE vo);

	public void validarAlteracao(ENTIDADE entidade);

	public void validarExclusao(ENTIDADE entidade);

	public void validarInclusao(ENTIDADE entidade);

	public void validarUnicidade(ENTIDADE vo);

}
